/**
 * 启用事务管理的注解
 * 该注解用于开启事务管理功能，可以在类级别使用
 * 它允许开发者指定自定义的事务管理类
 */
package com.jms.framework.jdbc.transaction.annotation;

import com.jms.framework.jdbc.transaction.GeneralTransactionManagement;

import java.lang.annotation.*;

/**
 * @author jms
 * @version 1.0.0
 * @since 2025-01-26
 * <p>
 * 启用事务管理
 * <p>
 * 该注解用于标记一个类需要进行事务管理它主要通过指定一个事务管理类来实现事务的处理
 * 默认情况下，使用{@link GeneralTransactionManagement}作为事务管理类
 * value 表示是否启用事务管理，默认为false开发者可以通过设置该值为true来启用事务管理
 * managementClass 指定使用的事务管理类，默认为GeneralTransactionManagement.class开发者可以指定其他实现了TransactionManagement接口的类
 */
@Documented
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface EnableTransactionManagement {
    /**
     * 是否启用事务管理
     *<p>
     * 默认值为false，表示不启用事务管理开发者可以通过设置该值为true来启用事务管理
     *
     * @return boolean 表示是否启用事务管理的布尔值
     */
    boolean value() default true;

    /**
     * 指定使用的事务管理类
     *<p>
     * 默认值为{@link GeneralTransactionManagement}
     * 开发者可以指定其他实现了TransactionManagement接口的类
     * 这允许开发者根据需要自定义事务管理的行为
     *
     * @return Class<? extends TransactionManagement> 事务管理类的类型
     */
    String managementClass() default "com.jms.framework.jdbc.transaction.GeneralTransactionManagement";
}
